<!doctype html>
<html>

	<head>
		<meta charset="utf-8">
		<meta http-equiv="Cache-Control" content="private, no-cache, no-store">
		<meta http-equiv="Pragma" content="no-cache">
		<meta http-equiv="Expires" content="0">

		<meta name="viewport" content="width=device-width, initial-scale=1.0">

		<link rel="shortcut icon" href="res/favicon.gif" type="image/x-icon">

		<script type="text/javascript">
			;window.NREUM||(NREUM={});NREUM.init={distributed_tracing:{enabled:true,exclude_newrelic_header:true},privacy:{cookies_enabled:true}};
			window.NREUM||(NREUM={}),__nr_require=function(t,e,n){function r(n){if(!e[n]){var o=e[n]={exports:{}};t[n][0].call(o.exports,function(e){var o=t[n][1][e];return r(o||e)},o,o.exports)}return e[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({1:[function(t,e,n){function r(t){try{c.console&&console.log(t)}catch(e){}}var o,i=t("ee"),a=t(29),c={};try{o=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(c.console=!0,o.indexOf("dev")!==-1&&(c.dev=!0),o.indexOf("nr_dev")!==-1&&(c.nrDev=!0))}catch(s){}c.nrDev&&i.on("internal-error",function(t){r(t.stack)}),c.dev&&i.on("fn-err",function(t,e,n){r(n.stack)}),c.dev&&(r("NR AGENT IN DEVELOPMENT MODE"),r("flags: "+a(c,function(t,e){return t}).join(", ")))},{}],2:[function(t,e,n){function r(t,e,n,r,c){try{p?p-=1:o(c||new UncaughtException(t,e,n),!0)}catch(f){try{i("ierr",[f,s.now(),!0])}catch(d){}}return"function"==typeof u&&u.apply(this,a(arguments))}function UncaughtException(t,e,n){this.message=t||"Uncaught error with no additional information",this.sourceURL=e,this.line=n}function o(t,e){var n=e?null:s.now();i("err",[t,n])}var i=t("handle"),a=t(30),c=t("ee"),s=t("loader"),f=t("gos"),u=window.onerror,d=!1,l="nr@seenError";if(!s.disabled){var p=0;s.features.err=!0,t(1),window.onerror=r;try{throw new Error}catch(h){"stack"in h&&(t(13),t(12),"addEventListener"in window&&t(6),s.xhrWrappable&&t(14),d=!0)}c.on("fn-start",function(t,e,n){d&&(p+=1)}),c.on("fn-err",function(t,e,n){d&&!n[l]&&(f(n,l,function(){return!0}),this.thrown=!0,o(n))}),c.on("fn-end",function(){d&&!this.thrown&&p>0&&(p-=1)}),c.on("internal-error",function(t){i("ierr",[t,s.now(),!0])})}},{}],3:[function(t,e,n){var r=t("loader");r.disabled||(r.features.ins=!0)},{}],4:[function(t,e,n){function r(){L++,T=g.hash,this[u]=y.now()}function o(){L--,g.hash!==T&&i(0,!0);var t=y.now();this[h]=~~this[h]+t-this[u],this[d]=t}function i(t,e){E.emit("newURL",[""+g,e])}function a(t,e){t.on(e,function(){this[e]=y.now()})}var c="-start",s="-end",f="-body",u="fn"+c,d="fn"+s,l="cb"+c,p="cb"+s,h="jsTime",m="fetch",v="addEventListener",w=window,g=w.location,y=t("loader");if(w[v]&&y.xhrWrappable&&!y.disabled){var x=t(10),b=t(11),E=t(8),R=t(6),O=t(13),N=t(7),M=t(14),P=t(9),C=t("ee"),S=C.get("tracer");t(16),y.features.spa=!0;var T,L=0;C.on(u,r),b.on(l,r),P.on(l,r),C.on(d,o),b.on(p,o),P.on(p,o),C.buffer([u,d,"xhr-done","xhr-resolved"]),R.buffer([u]),O.buffer(["setTimeout"+s,"clearTimeout"+c,u]),M.buffer([u,"new-xhr","send-xhr"+c]),N.buffer([m+c,m+"-done",m+f+c,m+f+s]),E.buffer(["newURL"]),x.buffer([u]),b.buffer(["propagate",l,p,"executor-err","resolve"+c]),S.buffer([u,"no-"+u]),P.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"]),a(M,"send-xhr"+c),a(C,"xhr-resolved"),a(C,"xhr-done"),a(N,m+c),a(N,m+"-done"),a(P,"new-jsonp"),a(P,"jsonp-end"),a(P,"cb-start"),E.on("pushState-end",i),E.on("replaceState-end",i),w[v]("hashchange",i,!0),w[v]("load",i,!0),w[v]("popstate",function(){i(0,L>1)},!0)}},{}],5:[function(t,e,n){function r(t){}if(window.performance&&window.performance.timing&&window.performance.getEntriesByType){var o=t("ee"),i=t("handle"),a=t(13),c=t(12),s="learResourceTimings",f="addEventListener",u="resourcetimingbufferfull",d="bstResource",l="resource",p="-start",h="-end",m="fn"+p,v="fn"+h,w="bstTimer",g="pushState",y=t("loader");if(!y.disabled){y.features.stn=!0,t(8),"addEventListener"in window&&t(6);var x=NREUM.o.EV;o.on(m,function(t,e){var n=t[0];n instanceof x&&(this.bstStart=y.now())}),o.on(v,function(t,e){var n=t[0];n instanceof x&&i("bst",[n,e,this.bstStart,y.now()])}),a.on(m,function(t,e,n){this.bstStart=y.now(),this.bstType=n}),a.on(v,function(t,e){i(w,[e,this.bstStart,y.now(),this.bstType])}),c.on(m,function(){this.bstStart=y.now()}),c.on(v,function(t,e){i(w,[e,this.bstStart,y.now(),"requestAnimationFrame"])}),o.on(g+p,function(t){this.time=y.now(),this.startPath=location.pathname+location.hash}),o.on(g+h,function(t){i("bstHist",[location.pathname+location.hash,this.startPath,this.time])}),f in window.performance&&(window.performance["c"+s]?window.performance[f](u,function(t){i(d,[window.performance.getEntriesByType(l)]),window.performance["c"+s]()},!1):window.performance[f]("webkit"+u,function(t){i(d,[window.performance.getEntriesByType(l)]),window.performance["webkitC"+s]()},!1)),document[f]("scroll",r,{passive:!0}),document[f]("keypress",r,!1),document[f]("click",r,!1)}}},{}],6:[function(t,e,n){function r(t){for(var e=t;e&&!e.hasOwnProperty(u);)e=Object.getPrototypeOf(e);e&&o(e)}function o(t){c.inPlace(t,[u,d],"-",i)}function i(t,e){return t[1]}var a=t("ee").get("events"),c=t("wrap-function")(a,!0),s=t("gos"),f=XMLHttpRequest,u="addEventListener",d="removeEventListener";e.exports=a,"getPrototypeOf"in Object?(r(document),r(window),r(f.prototype)):f.prototype.hasOwnProperty(u)&&(o(window),o(f.prototype)),a.on(u+"-start",function(t,e){var n=t[1],r=s(n,"nr@wrapped",function(){function t(){if("function"==typeof n.handleEvent)return n.handleEvent.apply(n,arguments)}var e={object:t,"function":n}[typeof n];return e?c(e,"fn-",null,e.name||"anonymous"):n});this.wrapped=t[1]=r}),a.on(d+"-start",function(t){t[1]=this.wrapped||t[1]})},{}],7:[function(t,e,n){function r(t,e,n){var r=t[e];"function"==typeof r&&(t[e]=function(){var t=i(arguments),e={};o.emit(n+"before-start",[t],e);var a;e[m]&&e[m].dt&&(a=e[m].dt);var c=r.apply(this,t);return o.emit(n+"start",[t,a],c),c.then(function(t){return o.emit(n+"end",[null,t],c),t},function(t){throw o.emit(n+"end",[t],c),t})})}var o=t("ee").get("fetch"),i=t(30),a=t(29);e.exports=o;var c=window,s="fetch-",f=s+"body-",u=["arrayBuffer","blob","json","text","formData"],d=c.Request,l=c.Response,p=c.fetch,h="prototype",m="nr@context";d&&l&&p&&(a(u,function(t,e){r(d[h],e,f),r(l[h],e,f)}),r(c,"fetch",s),o.on(s+"end",function(t,e){var n=this;if(e){var r=e.headers.get("content-length");null!==r&&(n.rxSize=r),o.emit(s+"done",[null,e],n)}else o.emit(s+"done",[t],n)}))},{}],8:[function(t,e,n){var r=t("ee").get("history"),o=t("wrap-function")(r);e.exports=r;var i=window.history&&window.history.constructor&&window.history.constructor.prototype,a=window.history;i&&i.pushState&&i.replaceState&&(a=i),o.inPlace(a,["pushState","replaceState"],"-")},{}],9:[function(t,e,n){function r(t){function e(){s.emit("jsonp-end",[],l),t.removeEventListener("load",e,!1),t.removeEventListener("error",n,!1)}function n(){s.emit("jsonp-error",[],l),s.emit("jsonp-end",[],l),t.removeEventListener("load",e,!1),t.removeEventListener("error",n,!1)}var r=t&&"string"==typeof t.nodeName&&"script"===t.nodeName.toLowerCase();if(r){var o="function"==typeof t.addEventListener;if(o){var a=i(t.src);if(a){var u=c(a),d="function"==typeof u.parent[u.key];if(d){var l={};f.inPlace(u.parent,[u.key],"cb-",l),t.addEventListener("load",e,!1),t.addEventListener("error",n,!1),s.emit("new-jsonp",[t.src],l)}}}}}function o(){return"addEventListener"in window}function i(t){var e=t.match(u);return e?e[1]:null}function a(t,e){var n=t.match(l),r=n[1],o=n[3];return o?a(o,e[r]):e[r]}function c(t){var e=t.match(d);return e&&e.length>=3?{key:e[2],parent:a(e[1],window)}:{key:t,parent:window}}var s=t("ee").get("jsonp"),f=t("wrap-function")(s);if(e.exports=s,o()){var u=/[?&](?:callback|cb)=([^&#]+)/,d=/(.*)\.([^.]+)/,l=/^(\w+)(\.|$)(.*)$/,p=["appendChild","insertBefore","replaceChild"];Node&&Node.prototype&&Node.prototype.appendChild?f.inPlace(Node.prototype,p,"dom-"):(f.inPlace(HTMLElement.prototype,p,"dom-"),f.inPlace(HTMLHeadElement.prototype,p,"dom-"),f.inPlace(HTMLBodyElement.prototype,p,"dom-")),s.on("dom-start",function(t){r(t[0])})}},{}],10:[function(t,e,n){var r=t("ee").get("mutation"),o=t("wrap-function")(r),i=NREUM.o.MO;e.exports=r,i&&(window.MutationObserver=function(t){return this instanceof i?new i(o(t,"fn-")):i.apply(this,arguments)},MutationObserver.prototype=i.prototype)},{}],11:[function(t,e,n){function r(t){var e=i.context(),n=c(t,"executor-",e,null,!1),r=new f(n);return i.context(r).getCtx=function(){return e},r}var o=t("wrap-function"),i=t("ee").get("promise"),a=t("ee").getOrSetContext,c=o(i),s=t(29),f=NREUM.o.PR;e.exports=i,f&&(window.Promise=r,["all","race"].forEach(function(t){var e=f[t];f[t]=function(n){function r(t){return function(){i.emit("propagate",[null,!o],a,!1,!1),o=o||!t}}var o=!1;s(n,function(e,n){Promise.resolve(n).then(r("all"===t),r(!1))});var a=e.apply(f,arguments),c=f.resolve(a);return c}}),["resolve","reject"].forEach(function(t){var e=f[t];f[t]=function(t){var n=e.apply(f,arguments);return t!==n&&i.emit("propagate",[t,!0],n,!1,!1),n}}),f.prototype["catch"]=function(t){return this.then(null,t)},f.prototype=Object.create(f.prototype,{constructor:{value:r}}),s(Object.getOwnPropertyNames(f),function(t,e){try{r[e]=f[e]}catch(n){}}),o.wrapInPlace(f.prototype,"then",function(t){return function(){var e=this,n=o.argsToArray.apply(this,arguments),r=a(e);r.promise=e,n[0]=c(n[0],"cb-",r,null,!1),n[1]=c(n[1],"cb-",r,null,!1);var s=t.apply(this,n);return r.nextPromise=s,i.emit("propagate",[e,!0],s,!1,!1),s}}),i.on("executor-start",function(t){t[0]=c(t[0],"resolve-",this,null,!1),t[1]=c(t[1],"resolve-",this,null,!1)}),i.on("executor-err",function(t,e,n){t[1](n)}),i.on("cb-end",function(t,e,n){i.emit("propagate",[n,!0],this.nextPromise,!1,!1)}),i.on("propagate",function(t,e,n){this.getCtx&&!e||(this.getCtx=function(){if(t instanceof Promise)var e=i.context(t);return e&&e.getCtx?e.getCtx():this})}),r.toString=function(){return""+f})},{}],12:[function(t,e,n){var r=t("ee").get("raf"),o=t("wrap-function")(r),i="equestAnimationFrame";e.exports=r,o.inPlace(window,["r"+i,"mozR"+i,"webkitR"+i,"msR"+i],"raf-"),r.on("raf-start",function(t){t[0]=o(t[0],"fn-")})},{}],13:[function(t,e,n){function r(t,e,n){t[0]=a(t[0],"fn-",null,n)}function o(t,e,n){this.method=n,this.timerDuration=isNaN(t[1])?0:+t[1],t[0]=a(t[0],"fn-",this,n)}var i=t("ee").get("timer"),a=t("wrap-function")(i),c="setTimeout",s="setInterval",f="clearTimeout",u="-start",d="-";e.exports=i,a.inPlace(window,[c,"setImmediate"],c+d),a.inPlace(window,[s],s+d),a.inPlace(window,[f,"clearImmediate"],f+d),i.on(s+u,r),i.on(c+u,o)},{}],14:[function(t,e,n){function r(t,e){d.inPlace(e,["onreadystatechange"],"fn-",c)}function o(){var t=this,e=u.context(t);t.readyState>3&&!e.resolved&&(e.resolved=!0,u.emit("xhr-resolved",[],t)),d.inPlace(t,g,"fn-",c)}function i(t){y.push(t),h&&(b?b.then(a):v?v(a):(E=-E,R.data=E))}function a(){for(var t=0;t<y.length;t++)r([],y[t]);y.length&&(y=[])}function c(t,e){return e}function s(t,e){for(var n in t)e[n]=t[n];return e}t(6);var f=t("ee"),u=f.get("xhr"),d=t("wrap-function")(u),l=NREUM.o,p=l.XHR,h=l.MO,m=l.PR,v=l.SI,w="readystatechange",g=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],y=[];e.exports=u;var x=window.XMLHttpRequest=function(t){var e=new p(t);try{u.emit("new-xhr",[e],e),e.addEventListener(w,o,!1)}catch(n){try{u.emit("internal-error",[n])}catch(r){}}return e};if(s(p,x),x.prototype=p.prototype,d.inPlace(x.prototype,["open","send"],"-xhr-",c),u.on("send-xhr-start",function(t,e){r(t,e),i(e)}),u.on("open-xhr-start",r),h){var b=m&&m.resolve();if(!v&&!m){var E=1,R=document.createTextNode(E);new h(a).observe(R,{characterData:!0})}}else f.on("fn-end",function(t){t[0]&&t[0].type===w||a()})},{}],15:[function(t,e,n){function r(t){if(!c(t))return null;var e=window.NREUM;if(!e.loader_config)return null;var n=(e.loader_config.accountID||"").toString()||null,r=(e.loader_config.agentID||"").toString()||null,f=(e.loader_config.trustKey||"").toString()||null;if(!n||!r)return null;var h=p.generateSpanId(),m=p.generateTraceId(),v=Date.now(),w={spanId:h,traceId:m,timestamp:v};return(t.sameOrigin||s(t)&&l())&&(w.traceContextParentHeader=o(h,m),w.traceContextStateHeader=i(h,v,n,r,f)),(t.sameOrigin&&!u()||!t.sameOrigin&&s(t)&&d())&&(w.newrelicHeader=a(h,m,v,n,r,f)),w}function o(t,e){return"00-"+e+"-"+t+"-01"}function i(t,e,n,r,o){var i=0,a="",c=1,s="",f="";return o+"@nr="+i+"-"+c+"-"+n+"-"+r+"-"+t+"-"+a+"-"+s+"-"+f+"-"+e}function a(t,e,n,r,o,i){var a="btoa"in window&&"function"==typeof window.btoa;if(!a)return null;var c={v:[0,1],d:{ty:"Browser",ac:r,ap:o,id:t,tr:e,ti:n}};return i&&r!==i&&(c.d.tk=i),btoa(JSON.stringify(c))}function c(t){return f()&&s(t)}function s(t){var e=!1,n={};if("init"in NREUM&&"distributed_tracing"in NREUM.init&&(n=NREUM.init.distributed_tracing),t.sameOrigin)e=!0;else if(n.allowed_origins instanceof Array)for(var r=0;r<n.allowed_origins.length;r++){var o=h(n.allowed_origins[r]);if(t.hostname===o.hostname&&t.protocol===o.protocol&&t.port===o.port){e=!0;break}}return e}function f(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.enabled}function u(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.exclude_newrelic_header}function d(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&NREUM.init.distributed_tracing.cors_use_newrelic_header!==!1}function l(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.cors_use_tracecontext_headers}var p=t(26),h=t(17);e.exports={generateTracePayload:r,shouldGenerateTrace:c}},{}],16:[function(t,e,n){function r(t){var e=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var r=0;r<l;r++)t.removeEventListener(d[r],this.listener,!1);e.aborted||(n.duration=a.now()-this.startTime,this.loadCaptureCalled||4!==t.readyState?null==e.status&&(e.status=0):i(this,t),n.cbTime=this.cbTime,u.emit("xhr-done",[t],t),c("xhr",[e,n,this.startTime]))}}function o(t,e){var n=s(e),r=t.params;r.host=n.hostname+":"+n.port,r.pathname=n.pathname,t.parsedOrigin=s(e),t.sameOrigin=t.parsedOrigin.sameOrigin}function i(t,e){t.params.status=e.status;var n=v(e,t.lastSize);if(n&&(t.metrics.rxSize=n),t.sameOrigin){var r=e.getResponseHeader("X-NewRelic-App-Data");r&&(t.params.cat=r.split(", ").pop())}t.loadCaptureCalled=!0}var a=t("loader");if(a.xhrWrappable&&!a.disabled){var c=t("handle"),s=t(17),f=t(15).generateTracePayload,u=t("ee"),d=["load","error","abort","timeout"],l=d.length,p=t("id"),h=t(22),m=t(21),v=t(18),w=window.XMLHttpRequest;a.features.xhr=!0,t(14),t(7),u.on("new-xhr",function(t){var e=this;e.totalCbs=0,e.called=0,e.cbTime=0,e.end=r,e.ended=!1,e.xhrGuids={},e.lastSize=null,e.loadCaptureCalled=!1,e.params=this.params||{},e.metrics=this.metrics||{},t.addEventListener("load",function(n){i(e,t)},!1),h&&(h>34||h<10)||window.opera||t.addEventListener("progress",function(t){e.lastSize=t.loaded},!1)}),u.on("open-xhr-start",function(t){this.params={method:t[0]},o(this,t[1]),this.metrics={}}),u.on("open-xhr-end",function(t,e){"loader_config"in NREUM&&"xpid"in NREUM.loader_config&&this.sameOrigin&&e.setRequestHeader("X-NewRelic-ID",NREUM.loader_config.xpid);var n=f(this.parsedOrigin);if(n){var r=!1;n.newrelicHeader&&(e.setRequestHeader("newrelic",n.newrelicHeader),r=!0),n.traceContextParentHeader&&(e.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&e.setRequestHeader("tracestate",n.traceContextStateHeader),r=!0),r&&(this.dt=n)}}),u.on("send-xhr-start",function(t,e){var n=this.metrics,r=t[0],o=this;if(n&&r){var i=m(r);i&&(n.txSize=i)}this.startTime=a.now(),this.listener=function(t){try{"abort"!==t.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==t.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof e.onload))&&o.end(e)}catch(n){try{u.emit("internal-error",[n])}catch(r){}}};for(var c=0;c<l;c++)e.addEventListener(d[c],this.listener,!1)}),u.on("xhr-cb-time",function(t,e,n){this.cbTime+=t,e?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof n.onload||this.end(n)}),u.on("xhr-load-added",function(t,e){var n=""+p(t)+!!e;this.xhrGuids&&!this.xhrGuids[n]&&(this.xhrGuids[n]=!0,this.totalCbs+=1)}),u.on("xhr-load-removed",function(t,e){var n=""+p(t)+!!e;this.xhrGuids&&this.xhrGuids[n]&&(delete this.xhrGuids[n],this.totalCbs-=1)}),u.on("addEventListener-end",function(t,e){e instanceof w&&"load"===t[0]&&u.emit("xhr-load-added",[t[1],t[2]],e)}),u.on("removeEventListener-end",function(t,e){e instanceof w&&"load"===t[0]&&u.emit("xhr-load-removed",[t[1],t[2]],e)}),u.on("fn-start",function(t,e,n){e instanceof w&&("onload"===n&&(this.onload=!0),("load"===(t[0]&&t[0].type)||this.onload)&&(this.xhrCbStart=a.now()))}),u.on("fn-end",function(t,e){this.xhrCbStart&&u.emit("xhr-cb-time",[a.now()-this.xhrCbStart,this.onload,e],e)}),u.on("fetch-before-start",function(t){function e(t,e){var n=!1;return e.newrelicHeader&&(t.set("newrelic",e.newrelicHeader),n=!0),e.traceContextParentHeader&&(t.set("traceparent",e.traceContextParentHeader),e.traceContextStateHeader&&t.set("tracestate",e.traceContextStateHeader),n=!0),n}var n,r=t[1]||{};"string"==typeof t[0]?n=t[0]:t[0]&&t[0].url?n=t[0].url:window.URL&&t[0]&&t[0]instanceof URL&&(n=t[0].href),n&&(this.parsedOrigin=s(n),this.sameOrigin=this.parsedOrigin.sameOrigin);var o=f(this.parsedOrigin);if(o&&(o.newrelicHeader||o.traceContextParentHeader))if("string"==typeof t[0]||window.URL&&t[0]&&t[0]instanceof URL){var i={};for(var a in r)i[a]=r[a];i.headers=new Headers(r.headers||{}),e(i.headers,o)&&(this.dt=o),t.length>1?t[1]=i:t.push(i)}else t[0]&&t[0].headers&&e(t[0].headers,o)&&(this.dt=o)})}},{}],17:[function(t,e,n){var r={};e.exports=function(t){if(t in r)return r[t];var e=document.createElement("a"),n=window.location,o={};e.href=t,o.port=e.port;var i=e.href.split("://");!o.port&&i[1]&&(o.port=i[1].split("/")[0].split("@").pop().split(":")[1]),o.port&&"0"!==o.port||(o.port="https"===i[0]?"443":"80"),o.hostname=e.hostname||n.hostname,o.pathname=e.pathname,o.protocol=i[0],"/"!==o.pathname.charAt(0)&&(o.pathname="/"+o.pathname);var a=!e.protocol||":"===e.protocol||e.protocol===n.protocol,c=e.hostname===document.domain&&e.port===n.port;return o.sameOrigin=a&&(!e.hostname||c),"/"===o.pathname&&(r[t]=o),o}},{}],18:[function(t,e,n){function r(t,e){var n=t.responseType;return"json"===n&&null!==e?e:"arraybuffer"===n||"blob"===n||"json"===n?o(t.response):"text"===n||""===n||void 0===n?o(t.responseText):void 0}var o=t(21);e.exports=r},{}],19:[function(t,e,n){function r(){}function o(t,e,n){return function(){return i(t,[f.now()].concat(c(arguments)),e?null:this,n),e?void 0:this}}var i=t("handle"),a=t(29),c=t(30),s=t("ee").get("tracer"),f=t("loader"),u=NREUM;"undefined"==typeof window.newrelic&&(newrelic=u);var d=["setPageViewName","setCustomAttribute","setErrorHandler","finished","addToTrace","inlineHit","addRelease"],l="api-",p=l+"ixn-";a(d,function(t,e){u[e]=o(l+e,!0,"api")}),u.addPageAction=o(l+"addPageAction",!0),u.setCurrentRouteName=o(l+"routeName",!0),e.exports=newrelic,u.interaction=function(){return(new r).get()};var h=r.prototype={createTracer:function(t,e){var n={},r=this,o="function"==typeof e;return i(p+"tracer",[f.now(),t,n],r),function(){if(s.emit((o?"":"no-")+"fn-start",[f.now(),r,o],n),o)try{return e.apply(this,arguments)}catch(t){throw s.emit("fn-err",[arguments,this,t],n),t}finally{s.emit("fn-end",[f.now()],n)}}}};a("actionText,setName,setAttribute,save,ignore,onEnd,getContext,end,get".split(","),function(t,e){h[e]=o(p+e)}),newrelic.noticeError=function(t,e){"string"==typeof t&&(t=new Error(t)),i("err",[t,f.now(),!1,e])}},{}],20:[function(t,e,n){function r(t){if(NREUM.init){for(var e=NREUM.init,n=t.split("."),r=0;r<n.length-1;r++)if(e=e[n[r]],"object"!=typeof e)return;return e=e[n[n.length-1]]}}e.exports={getConfiguration:r}},{}],21:[function(t,e,n){e.exports=function(t){if("string"==typeof t&&t.length)return t.length;if("object"==typeof t){if("undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer&&t.byteLength)return t.byteLength;if("undefined"!=typeof Blob&&t instanceof Blob&&t.size)return t.size;if(!("undefined"!=typeof FormData&&t instanceof FormData))try{return JSON.stringify(t).length}catch(e){return}}}},{}],22:[function(t,e,n){var r=0,o=navigator.userAgent.match(/Firefox[\/\s](\d+\.\d+)/);o&&(r=+o[1]),e.exports=r},{}],23:[function(t,e,n){function r(){return c.exists&&performance.now?Math.round(performance.now()):(i=Math.max((new Date).getTime(),i))-a}function o(){return i}var i=(new Date).getTime(),a=i,c=t(31);e.exports=r,e.exports.offset=a,e.exports.getLastTimestamp=o},{}],24:[function(t,e,n){function r(t){return!(!t||!t.protocol||"file:"===t.protocol)}e.exports=r},{}],25:[function(t,e,n){function r(t,e){var n=t.getEntries();n.forEach(function(t){"first-paint"===t.name?d("timing",["fp",Math.floor(t.startTime)]):"first-contentful-paint"===t.name&&d("timing",["fcp",Math.floor(t.startTime)])})}function o(t,e){var n=t.getEntries();n.length>0&&d("lcp",[n[n.length-1]])}function i(t){t.getEntries().forEach(function(t){t.hadRecentInput||d("cls",[t])})}function a(t){if(t instanceof h&&!v){var e=Math.round(t.timeStamp),n={type:t.type};e<=l.now()?n.fid=l.now()-e:e>l.offset&&e<=Date.now()?(e-=l.offset,n.fid=l.now()-e):e=l.now(),v=!0,d("timing",["fi",e,n])}}function c(t){d("pageHide",[l.now(),t])}if(!("init"in NREUM&&"page_view_timing"in NREUM.init&&"enabled"in NREUM.init.page_view_timing&&NREUM.init.page_view_timing.enabled===!1)){var s,f,u,d=t("handle"),l=t("loader"),p=t(28),h=NREUM.o.EV;if("PerformanceObserver"in window&&"function"==typeof window.PerformanceObserver){s=new PerformanceObserver(r);try{s.observe({entryTypes:["paint"]})}catch(m){}f=new PerformanceObserver(o);try{f.observe({entryTypes:["largest-contentful-paint"]})}catch(m){}u=new PerformanceObserver(i);try{u.observe({type:"layout-shift",buffered:!0})}catch(m){}}if("addEventListener"in document){var v=!1,w=["click","keydown","mousedown","pointerdown","touchstart"];w.forEach(function(t){document.addEventListener(t,a,!1)})}p(c)}},{}],26:[function(t,e,n){function r(){function t(){return e?15&e[n++]:16*Math.random()|0}var e=null,n=0,r=window.crypto||window.msCrypto;r&&r.getRandomValues&&(e=r.getRandomValues(new Uint8Array(31)));for(var o,i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",a="",c=0;c<i.length;c++)o=i[c],"x"===o?a+=t().toString(16):"y"===o?(o=3&t()|8,a+=o.toString(16)):a+=o;return a}function o(){return a(16)}function i(){return a(32)}function a(t){function e(){return n?15&n[r++]:16*Math.random()|0}var n=null,r=0,o=window.crypto||window.msCrypto;o&&o.getRandomValues&&Uint8Array&&(n=o.getRandomValues(new Uint8Array(31)));for(var i=[],a=0;a<t;a++)i.push(e().toString(16));return i.join("")}e.exports={generateUuid:r,generateSpanId:o,generateTraceId:i}},{}],27:[function(t,e,n){function r(t,e){if(!o)return!1;if(t!==o)return!1;if(!e)return!0;if(!i)return!1;for(var n=i.split("."),r=e.split("."),a=0;a<r.length;a++)if(r[a]!==n[a])return!1;return!0}var o=null,i=null,a=/Version\/(\S+)\s+Safari/;if(navigator.userAgent){var c=navigator.userAgent,s=c.match(a);s&&c.indexOf("Chrome")===-1&&c.indexOf("Chromium")===-1&&(o="Safari",i=s[1])}e.exports={agent:o,version:i,match:r}},{}],28:[function(t,e,n){function r(t){function e(){t(a&&document[a]?document[a]:document[o]?"hidden":"visible")}"addEventListener"in document&&i&&document.addEventListener(i,e,!1)}e.exports=r;var o,i,a;"undefined"!=typeof document.hidden?(o="hidden",i="visibilitychange",a="visibilityState"):"undefined"!=typeof document.msHidden?(o="msHidden",i="msvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(o="webkitHidden",i="webkitvisibilitychange",a="webkitVisibilityState")},{}],29:[function(t,e,n){function r(t,e){var n=[],r="",i=0;for(r in t)o.call(t,r)&&(n[i]=e(r,t[r]),i+=1);return n}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],30:[function(t,e,n){function r(t,e,n){e||(e=0),"undefined"==typeof n&&(n=t?t.length:0);for(var r=-1,o=n-e||0,i=Array(o<0?0:o);++r<o;)i[r]=t[e+r];return i}e.exports=r},{}],31:[function(t,e,n){e.exports={exists:"undefined"!=typeof window.performance&&window.performance.timing&&"undefined"!=typeof window.performance.timing.navigationStart}},{}],ee:[function(t,e,n){function r(){}function o(t){function e(t){return t&&t instanceof r?t:t?f(t,s,a):a()}function n(n,r,o,i,a){if(a!==!1&&(a=!0),!p.aborted||i){t&&a&&t(n,r,o);for(var c=e(o),s=m(n),f=s.length,u=0;u<f;u++)s[u].apply(c,r);var l=d[y[n]];return l&&l.push([x,n,r,c]),c}}function i(t,e){g[t]=m(t).concat(e)}function h(t,e){var n=g[t];if(n)for(var r=0;r<n.length;r++)n[r]===e&&n.splice(r,1)}function m(t){return g[t]||[]}function v(t){return l[t]=l[t]||o(n)}function w(t,e){p.aborted||u(t,function(t,n){e=e||"feature",y[n]=e,e in d||(d[e]=[])})}var g={},y={},x={on:i,addEventListener:i,removeEventListener:h,emit:n,get:v,listeners:m,context:e,buffer:w,abort:c,aborted:!1};return x}function i(t){return f(t,s,a)}function a(){return new r}function c(){(d.api||d.feature)&&(p.aborted=!0,d=p.backlog={})}var s="nr@context",f=t("gos"),u=t(29),d={},l={},p=e.exports=o();e.exports.getOrSetContext=i,p.backlog=d},{}],gos:[function(t,e,n){function r(t,e,n){if(o.call(t,e))return t[e];var r=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!1}),r}catch(i){}return t[e]=r,r}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],handle:[function(t,e,n){function r(t,e,n,r){o.buffer([t],r),o.emit(t,e,n)}var o=t("ee").get("handle");e.exports=r,r.ee=o},{}],id:[function(t,e,n){function r(t){var e=typeof t;return!t||"object"!==e&&"function"!==e?-1:t===window?0:a(t,i,function(){return o++})}var o=1,i="nr@id",a=t("gos");e.exports=r},{}],loader:[function(t,e,n){function r(){if(!N++){var t=O.info=NREUM.info,e=m.getElementsByTagName("script")[0];if(setTimeout(f.abort,3e4),!(t&&t.licenseKey&&t.applicationID&&e))return f.abort();s(E,function(e,n){t[e]||(t[e]=n)});var n=a();c("mark",["onload",n+O.offset],null,"api"),c("timing",["load",n]);var r=m.createElement("script");0===t.agent.indexOf("http://")||0===t.agent.indexOf("https://")?r.src=t.agent:r.src=p+"://"+t.agent,e.parentNode.insertBefore(r,e)}}function o(){"complete"===m.readyState&&i()}function i(){c("mark",["domContent",a()+O.offset],null,"api")}var a=t(23),c=t("handle"),s=t(29),f=t("ee"),u=t(27),d=t(24),l=t(20),p=l.getConfiguration("ssl")===!1?"http":"https",h=window,m=h.document,v="addEventListener",w="attachEvent",g=h.XMLHttpRequest,y=g&&g.prototype,x=!d(h.location);NREUM.o={ST:setTimeout,SI:h.setImmediate,CT:clearTimeout,XHR:g,REQ:h.Request,EV:h.Event,PR:h.Promise,MO:h.MutationObserver};var b=""+location,E={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-spa-1209.min.js"},R=g&&y&&y[v]&&!/CriOS/.test(navigator.userAgent),O=e.exports={offset:a.getLastTimestamp(),now:a,origin:b,features:{},xhrWrappable:R,userAgent:u,disabled:x};if(!x){t(19),t(25),m[v]?(m[v]("DOMContentLoaded",i,!1),h[v]("load",r,!1)):(m[w]("onreadystatechange",o),h[w]("onload",r)),c("mark",["firstbyte",a.getLastTimestamp()],null,"api");var N=0}},{}],"wrap-function":[function(t,e,n){function r(t,e){function n(e,n,r,s,f){function nrWrapper(){var i,a,u,l;try{a=this,i=d(arguments),u="function"==typeof r?r(i,a):r||{}}catch(p){o([p,"",[i,a,s],u],t)}c(n+"start",[i,a,s],u,f);try{return l=e.apply(a,i)}catch(h){throw c(n+"err",[i,a,h],u,f),h}finally{c(n+"end",[i,a,l],u,f)}}return a(e)?e:(n||(n=""),nrWrapper[l]=e,i(e,nrWrapper,t),nrWrapper)}function r(t,e,r,o,i){r||(r="");var c,s,f,u="-"===r.charAt(0);for(f=0;f<e.length;f++)s=e[f],c=t[s],a(c)||(t[s]=n(c,u?s+r:r,o,s,i))}function c(n,r,i,a){if(!h||e){var c=h;h=!0;try{t.emit(n,r,i,e,a)}catch(s){o([s,n,r,i],t)}h=c}}return t||(t=u),n.inPlace=r,n.flag=l,n}function o(t,e){e||(e=u);try{e.emit("internal-error",t)}catch(n){}}function i(t,e,n){if(Object.defineProperty&&Object.keys)try{var r=Object.keys(t);return r.forEach(function(n){Object.defineProperty(e,n,{get:function(){return t[n]},set:function(e){return t[n]=e,e}})}),e}catch(i){o([i],n)}for(var a in t)p.call(t,a)&&(e[a]=t[a]);return e}function a(t){return!(t&&t instanceof Function&&t.apply&&!t[l])}function c(t,e){var n=e(t);return n[l]=t,i(t,n,u),n}function s(t,e,n){var r=t[e];t[e]=c(r,n)}function f(){for(var t=arguments.length,e=new Array(t),n=0;n<t;++n)e[n]=arguments[n];return e}var u=t("ee"),d=t(30),l="nr@original",p=Object.prototype.hasOwnProperty,h=!1;e.exports=r,e.exports.wrapFunction=c,e.exports.wrapInPlace=s,e.exports.argsToArray=f},{}]},{},["loader",2,16,5,3,4]);
			;NREUM.loader_config={accountID:"3133736",trustKey:"3133736",agentID:"519346088",licenseKey:"NRJS-2cd8671e469560c88e1",applicationID:"519346088"}
			;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"NRJS-2cd8671e469560c88e1",applicationID:"519346088",sa:1}
		</script>

		<!-- I only use jquery ironically -->

		<script src="lib/react.min.js"></script>   <!--todo: use min version -->

		<!-- Local versions of libs will be hosted so our Chinese players wont be forced to use VPN -->
		<script src="lib/jQuery.js?v=_2"></script>
		<script src="lib/dojo.xd.js"></script>
		<script src="lib/lz-string.js"></script>
		<script src="lib/dropbox_v2.js"></script>
		<script src="lib/md5.js"></script>

		<!-- friends don't let friends use AMD and require.js -->
		<script src="lib/system.js"></script>

		<!-- Global site tag (gtag.js) - Google Analytics -->
		<script async src="https://www.googletagmanager.com/gtag/js?id=G-0QBDX221PR"></script>
		<script>
			window.dataLayer = window.dataLayer || [];
			function gtag(){dataLayer.push(arguments);}
			gtag('js', new Date());

			gtag('config', 'G-0QBDX221PR');
		</script>

		<script type="text/javascript">
			var now = Date.now();
			$("<link />").attr("rel", "stylesheet").attr("type", "text/css").attr("href", "res/default.css?_=" + now).appendTo($("head"));
		</script>

		<script>
			/**
			 * Workaround for IE9 local storage :V
			 *
			 * This fix is intended for IE in general and especially for IE9,
			 * where localStorage is defined as system variable.
			 *
			 */

			window.LCstorage = window.localStorage;
			if (document.all && !window.localStorage) {
				window.LCstorage = {};
				window.LCstorage.removeItem = function () { };
			}
		</script>

		<script type="text/javascript">

			var version = "1493";
			var buildRevision = 0;

			var loadingProgress = 0,
				progressMax = 0;

			var loadingMessages = [
				"mew~mew~",
				"mew~mew~mew~",
				"mew~mew~mew~mew~",
				"mew~mew~mew~mew~mew~",
			];

			function loadModule(module){
				loadingProgress++;
				console.log("loading module " + module + "...");
				var progress = (loadingProgress / progressMax ) * 100;
				$("#loadingProgressBar").attr("value", progress);

				var i = (Math.floor(Math.random() * loadingMessages.length));
				$("#loadingProgressInfo").html(loadingMessages[i] + "...&nbsp(" + progress.toFixed() + "%)");
				return System.import(module + ".js?rev_=" + buildRevision + "_" + Date.now());
			}

			function _import(module, def){
				if (!def){
					return loadModule(module);
				} else {
					return def.then(function(){
						return loadModule(module);
					}).catch(function(err){
						console.error("_import#: unable to load module:", module);
						console.trace(err);
					});
				}
			}

			function loadTheme(themeId, timestamp){
				$("<link />")
					.attr("rel", "stylesheet")
					.attr("type", "text/css")
					.attr("href", "res/theme_" + themeId + ".css?_=" + timestamp)
					.appendTo($("head"));
			}

			dojo.addOnLoad(function() {
				var displayedVersion = version.split('').join('.');
				if (window.location.href.indexOf("alpha") >= 0) {
					displayedVersion += "-&alpha;";
				} else if (window.location.href.indexOf("beta") >= 0) {
					displayedVersion += "-&beta;";
				}

				$("#tooltip").hide();

				SystemJS.config({
					baseURL: ''
				});

				var modules = [
					"js/resources",
					"js/calendar",
					"js/buildings",
					"js/village",
					"js/science",
					"js/workshop",
					"js/diplomacy",
					"js/religion",
					"js/achievements",


					"js/jsx/left.jsx",
					"js/jsx/mid.jsx",
					"js/jsx/toolbar.jsx",
					"js/jsx/chiral.jsx",
					"js/jsx/queue.jsx",

					//required for defining IReactAware, will be relied upon by js/space
					"js/ui",

					"js/space",
					"js/prestige",
					"js/time",
					"js/stats",
					"js/challenges",
					"js/void",
					"js/math",
					"game",

					"js/toolbar"
				];
				progressMax = modules.length + 3;
				console.log("Loading...");

				//------ preload theme id ---------
				var uiData = LCstorage["com.nuclearunicorn.kittengame.ui"];
				var uiSettings = uiData && JSON.parse(uiData);
				if (uiSettings){
					if (uiSettings.theme){
						$("body").addClass("scheme_" + uiSettings.theme);
						loadTheme(uiSettings.theme, now);
					}
				}

				var def = $.getJSON("build.version.json?="+now).then(function(json){
					buildRevision = json.buildRevision;
					console.log("build revison is" + buildRevision);
					$("#versionLink").html(displayedVersion + ".r" + buildRevision);
				});
				def = _import("config", def);
				def.then(function() {
					var schemes = new classes.KGConfig().statics.schemes;
					for (var i = 0; i < schemes.length; ++i) {
						//todo: skip theme if preloaded
						if (!uiSettings || uiSettings.theme != schemes[i]){
							loadTheme(schemes[i], buildRevision);
						}
					}
				});

				def = _import("i18n", def);
				def.then(function () {
					console.log("Loading locale system");
					var langPromise = i18nLang.init(now);
					langPromise.done(function() {
						loadingMessages = [
							$I("ui.loading.msg.0"),
							$I("ui.loading.msg.1"),
							$I("ui.loading.msg.2"),
							$I("ui.loading.msg.3"),
							$I("ui.loading.msg.4"),
							$I("ui.loading.msg.5"),
							$I("ui.loading.msg.6"),
							$I("ui.loading.msg.7"),
							$I("ui.loading.msg.8"),
							$I("ui.loading.msg.9"),
							$I("ui.loading.msg.10"),
							$I("ui.loading.msg.11"),
							$I("ui.loading.msg.12"),
							$I("ui.loading.msg.13"),
							$I("ui.loading.msg.14"),
							$I("ui.loading.msg.15"),
						];

						def = _import("core", def);
						def.then(function () {
							console.log("Loading game modules");
							for (var i in modules){
								def = _import(modules[i], def);
							}
							def.then(initGame);
						});

					}).fail(function() {
						console.log("Unable to load locales");
					});
				});

			});

			function initGame() {
				console.log("About to initialize the game");
				$("#loadingContainer").hide();
				$("#game").show();

				try {
					gamePage = game = new com.nuclearunicorn.game.ui.GamePage();
					gamePage.setUI(new classes.ui.DesktopUI("gameContainerId"));

					gamePage.telemetry.version = version;
					gamePage.telemetry.buildRevision = buildRevision;
					if (window.location.href.indexOf("beta") >= 0) {
						gamePage.telemetry.buildRevision += "-b";
					}

					//--------------------------
					var dropBoxClient = new Dropbox.Dropbox({clientId: "u6lnczzgm94nwg3"}); //the starting Dropbox object
					game.setDropboxClient(dropBoxClient);


					gamePage.load();
					gamePage.updateKarma();

					gamePage.render();
					gamePage.ui.renderFilters();
					gamePage.ui.onLoad();
					gamePage.start();


					//load optional irc

					$('iframe#kiwiirc_iframe').attr(
						'src', 
						'https://kiwiirc.com/client/irc.canternet.org/?nick=kitten_?#kittensgame'
					);

					var config = new classes.KGConfig();

					//update eldermass gifts on every game load pass
					//TODO: toggle timer in the background?
					gamePage.checkEldermass();
					//---------------------------------


					var host = window.location.hostname;
					gamePage.isLocalhost = window.location.protocol == "file:" || host == "localhost" || host == "127.0.0.1";
					if (gamePage.isLocalhost){
						$("#devModeButton").show();
					}
				} catch (ex){
					if (game && game.telemetry) {
						game.telemetry.logEvent("error", ex);
					}
					console.error(ex);
					console.trace();
				}

			}



			function dev(){
				if (gamePage.isLocalhost) {
					$("#dev_boostCalendar").show();
					$("#devPanelCheats").show();

					gamePage.devMode = true;
					gamePage.render();
				}
			}

			function dev_boostCalendar() {
				gamePage.calendar.ticksPerDay = 1/3;
			}

			function wipe(){
				gamePage.wipe();
			}

		</script>

		<title>Kittens Game - a Dark Souls of incremental gaming</title>
	</head>



	<body>
		<div id="gamePageContainer">

			<div id="topBar">
				<div style="padding-left: 10px; min-width: 0px; max-width: 400px; overflow: hidden; text-overflow: ellipsis;">
					<span class="gameTitle">Kittens Game </span>
					<span style="font-size: small;">
						by <a href="http://kittensgame.com/" class="copyright" target="_blank" tabindex="-1">bloodrizer</a>
					</span>
					<!--- a Dark Souls of incremental gaming -->

					<a href="#" style="color: red">
						<!-- nothing exceptional there so far -->
					</a>

					<span id="motd">
						<!-- motd -->
					</span>

					<span style="font-size: small;">
						<a href="http://kittensgame.com/alpha" tabindex="0" title="experimental, unstable" target="_blank" style="opacity:0.6;">&alpha;</a>
						<a href="http://kittensgame.com/beta" tabindex="0" title="experimental, stable" target="_blank">&beta;</a>
						<a href="http://kittensgame.com/web" tabindex="0" title="RC, nighty build" target="_blank">ML</a>
					</span>
				</div>

				<div id="devPanel" style="display:inline-block; padding-left: 15px; font-size: 14px;">
					<div id="devPanelFPS" onClick="gamePage.restartFPSCounters()">
					</div>
					<div id="devPanelCheats" style="display:none">
						<a href="#" onclick="gamePage.science.unlockAll();">All techs</a>
						<a href="#" onclick="gamePage.workshop.unlockAll();">All upgrades</a>
						<a href="#" onclick="gamePage.resPool.maxAll();">All resources</a>
						<a href="#" onclick="gamePage.bld.devAddStorage();">More storage</a>
						<a href="#" onclick="gamePage.unlockedSchemes = gamePage.ui.allSchemes; gamePage.ui.updateOptions();">All themes</a>
					</div>
				</div>
				
				<div id="headerLinks">
					<div id="headerToolbar" style="font-size: 12px; padding-top: 3px;">
						<!-- toolbar panel goes there -->
					</div>
					<span id="autosaveTooltip" style="padding-right: 15px; font-size: 12px; opacity: 0;">autosaving...</span>
					<span id="saveTooltip" style="padding-right: 15px; font-size: 12px; opacity: 0;">Saved!</span>
				</div>

				<div class="links-block" style="padding-top:3px; display:inline-flex;">
					<a id="save-link" href="#" onclick="gamePage.saveUI();">Save</a> |
					<a id="options-link" href="#" onclick="$('#optionsDiv').toggle();">Options</a> |

					<a id="reset-link" href="#" onclick="gamePage.reset();">Reset</a> |
					<span id="devModeButton" style="display: none;"><a href="#" id="devBtn" onclick="dev();">DEV</a> |</span>
					<a id="wipe-link" href="#" onclick="wipe();">Wipe</a> |
					<a id="getTheApp-link" href="#" onclick="gamePage.ui.displayAppDialog();" style="font-weight: bold; color:#666;">Get the app</a> |

					<a href="changelog.txt" target="_blank">Ver <span id="versionLink">?.?.?.?</span></a>
					<a href="#" id="newVersion" onClick="gamePage.reload();" title="New version available!" style="display:none">↻</a>
				</div>
			</div>

			<div id="loadingContainer">
				<div class="content">
					<span style="font-size:18px;"><img class="loader" width="16" height="16" src="res/ajax-loader.gif">&nbsp;Loading...<br></span>
					<br>
					<progress id="loadingProgressBar" value="0" max="100"></progress>
					<div id="loadingProgressInfo">Setting up game engine...</div>
				</div>
			</div>

			<div id="game" style="display:none;">
				<div id="tooltip" class="button_tooltip"></div>

				<!-- LEFT -->
				<div id="leftColumn" class="column" style="vertical-align: top;">
					<div id="leftColumnViewport">
						Loading...
					</div>
				</div>

				<!-- MID -->
				<div id="midColumn" style="vertical-align: top;" class="column">
					<div id="midColumnViewport" style="float:right; padding: 5px;">
						Loading...
					</div>
					<div id="gameContainerId" style="border: 1px solid gray;">
						<span>Oops!</span>
						<div id="gameContainerHelp" style="font-size:150%;">
							Looks like the game is not working. But don't worry.<br>
							<ul>
								<li>Check if JavaScript is enabled or Ad-Blockers are turned off.</li>
								<li>Try to refresh the game by pressing Ctrl+F5.</li>
								<li>Try to reload the game in about 10-15 minutes.</li>
								<li>If none of these work:
									<ul>
										<li>open the web console by pressing F12,</li>
										<li>go to the "Console" tab,</li>
										<li>take screenshots of all errors (red texts),</li>
										<li>post them on Discord.</li>
									</ul>
								</li>
							</ul>
						</div>
					</div>
				</div>

				<!-- RIGHT -->
				<div id="rightColumn" class="column">
					<div>
						<span id="calendarSign" style="cursor:pointer;"></span><span id="calendarDiv" style="cursor:pointer;">Calendar :V</span>
						<a id="dev_boostCalendar" href="#" onclick="dev_boostCalendar();" style="display: none; text-decoration: none; position: relative; left: 5px;">&gt;&gt;&gt;</a>
					</div>
					<div class="right-tab-header">
						<a id="logLink" href="#" class="active" onclick="gamePage.ui.hideChat();">Log</a>
						<a id="chatLink" class="chatLink" href="#" onclick="gamePage.ui.loadChat();">Chat</a>
						<a id="queueLink" class="queueLink" href="#" onclick="gamePage.ui.loadQueue();">Queue</a>
					</div>
					<div id="observeButton"></div>
					<div class="right-tab" id="rightTabLog">
						<div>
							<div class="console-intro" style="padding-top: 10px; border-top: 1px solid gray;">
								You are a kitten in a catnip forest.
							</div>

							<span id="clearLog">
								<a id="clearLogHref" href="#" onClick="gamePage.clearLog();">Clear log</a>
							</span>
							<span id="logFiltersBlock" style="padding-top: 5px">
								<a id="logFiltersBlockText" onclick="gamePage.toggleFilters();" href="#">[<span id="filterIcon">+</span>] Log Filters</a>
							</span>
							<a id="pauseBtn" style="font-size: 12px;" href="#" title="Pause/unpause the game" onclick="gamePage.togglePause();">pawse</a>
							<a id="undoBtn" style="font-size: 12px;" href="#" title="Undo the change" onclick="gamePage.undo();">undo</a>

							<div id="logFilters" style="display:none">
							</div>
						</div>
						<div id="gameLog" style="overflow-y: scroll; padding-top: 10px; height: 100%; min-height:100%;">
							<!-- Log goes there -->
						</div>
					</div>
					<div class="right-tab" id="rightTabQueue" style="display:none;">
						<div id="queueViewport"></div>
					</div>
					<div class="right-tab" id="rightTabChat" style="display:none;">
						<div id="IRCChatInner">

							<!--iframe-- src="https://kiwiirc.com/client/irc.canternet.org/?nick=kitten_?#kittensgame" style="border:0; width: 400px; height:800px;"></iframe-->
							<iframe id="kiwiirc_iframe" style="border:0; width: 400px; height:800px;"></iframe>
						</div>
					</div>
				</div>
				<div
					id="toggleCenter" onClick="gamePage.ui.toggleCenter();" class="column" tooltip="Toggle centered view"
				>
					<span class="toggleCenter">&gt;</span>
				</div>
			</div>

			<div id="creditsDiv" style="display: none" class="dialog credits">
				<a id="dialogClose" class="close" href="#" onclick="$('#creditsDiv').hide();" style="position: absolute; top: 10px; right: 15px;">close</a>

				CSS themes: shrx, Kida, Volkeyrn (see top bar of each theme).<br />
				<br />
				Code contributions:
				<ul>
					<li>
						<a href="http://www.reddit.com/user/Zusias" target="_blank">Zusias</a>
					</li>
					<li>Duke</li>
					<li title="For years of dedication and support">
						<a href="http://www.reddit.com/user/xranti" target="_blank">xranti</a>
					</li>
					<li><a href="http://www.reddit.com/user/klusark" target="_blank">klusark</a></li>
					<li title="For save editor, inspiration and years of dedication and support">
						<a href="https://coderpatsy.bitbucket.io/" target="_blank">coderpatsy</a>
					</li>
					<li>ArcanisCz</li>
					<li>Kida</li>
					<li title="For years of dedication and support">
						freeroot
					</li>
					<li title="For years of dedication and support">
						Ethaniel
					</li>
					<li title="Alpha branch, challenges, years of contribution">
						Kyogre
					</li>
					<li title="For years of managing IRC and the wiki">
						wikimon
					</li>
					<li title="Policies design and being a Grand Mufti">
						Hunter
					</li>
					<li title="Policies, general code stuff">
						Ziggurat
					</li>
					<li title="Exploration, general code stuff">
						plcp_
					</li>
					<li title="Themes implementation">
						Volkeyrn
					</li>
					<li title="help with i18n and localization">
						<a href="http://www.reddit.com/user/Pellax">PellaAndroid</a>
					</li>
				</ul>

				Thanks a lot to 4chan/igg for being such a nice guys.<br >
				Thanks a lot to /r/kittensgame community for all the feedback and testing.<br />
				Special thanks to Kittens Game discord mods and members<br />
				Special thanks for anyone who is not in the list, we still love you &lt;3<br/>
				tumblr icon by <a href="https://moonlight-pendent13.deviantart.com">Moonlight-pendent13</a><br />
				<br />
				Warmest thanks to <a href="http://www.reddit.com/user/ainil" target="_blank">ainil</a> for the long months of support and feedback during the formative days of KG.<br />
				<br />
				Thanks to mothloveslamp for supporting me and keeping me sane in my darkest hours.<br />
				<br />
				And finally, my undying gratitude to Waraiko.
			</div>


			<div id="optionsDiv" style="display: none;" class="dialog help">
				<a id="dialogClose" href="#" class="close" onclick="gamePage.closeOptions()" style="position: absolute; top: 10px; right: 15px;">close</a>

				<label id="optionLanguage" for="languageSelector">Language:</label>
				<select id="languageSelector" onchange="gamePage.ui.updateLanguage()">
				</select>
				&nbsp;<a id="addTranslationLink" target="_blank" href="https://crowdin.com/project/kittensgame" style="font-size:14px;">Translation portal</a>
				<a id="languageApplyLink" href="#" onclick="gamePage.ui.applyLanguage()" style="display: none; padding-left: 15px;">Apply changes</a>
				<br>
				<br>

				<label id="optionNotation" for="notationSelector">Notation:</label>
				<select id="notationSelector" onchange="gamePage.ui.updateNotation()">
				</select>
				<br>
				<br>

				<label id="optionScheme" for="schemeToggle">Color scheme:</label>
				<select id="schemeToggle" onchange="gamePage.toggleScheme($('#schemeToggle').val())">
				</select>
				&nbsp;<a id="schemeRelock" href="#" onclick="gamePage.ui.relockSchemes()" style="font-size:14px;">Relock schemes</a>
				<br><i><span id="schemeTip" style="font-size: 70%;">Schemes that you cannot select yet can be permanently unlocked by specific actions.</span></i>
				<br>
				<br>

				<input id="workersToggle" type="checkbox" onclick="gamePage.useWorkers = $('#workersToggle')[0].checked;">
				<label id="optionWorkers" for="workersToggle">Use web worker
					<i>(game works correctly in background tab, may cause performance issues)
						<br>
						You need to refresh the browser page for this setting to take effect.
					</i></label>
				<br>

				<!-- ===================================== NOTE: FOR FULL I18N SUPPORT ===================================== -->
				<!-- add new option text into en.json and code for i18n in ui.js:classes.ui.DesktopUI.updateIndexHTMLLanguage -->

				<input id="forceHighPrecision" type="checkbox" onclick="gamePage.opts.forceHighPrecision = $('#forceHighPrecision')[0].checked;">
				<label id="optionForceHighPrecision" for="forceHighPrecision">Use high precision for resource values</label>
				<br>

				<input id="usePerSecondValues" type="checkbox" onclick="gamePage.opts.usePerSecondValues = $('#usePerSecondValues')[0].checked;">
				<label id="optionUsePerSecondValues" for="usePerSecondValues">Use per second values <i>(per tick otherwise)</i></label>
				<br>
				<input id="usePercentageResourceValues" type="checkbox" onclick="gamePage.opts.usePercentageResourceValues = $('#usePercentageResourceValues')[0].checked;">
				<label id="optionUsePercentageResourceValues" for="usePercentageResourceValues">Use percentage resource production values</label>
				<br>
				<input id="showNonApplicableButtons" type="checkbox" onclick="gamePage.opts.showNonApplicableButtons = $('#showNonApplicableButtons')[0].checked;">
				<label id="optionShowNonApplicableButtons" for="showNonApplicableButtons">Always show festivals/trade/sacrifice/shatter buttons even if not applicable</label>
				<br>
				<input id="usePercentageConsumptionValues" type="checkbox" onclick="gamePage.opts.usePercentageConsumptionValues = $('#usePercentageConsumptionValues')[0].checked;">
				<label id="optionUsePercentageConsumptionValues" for="usePercentageConsumptionValues">Use percentage values for craft/trade/sacrifice buttons</label>
				<br>
				<input id="highlightUnavailable" type="checkbox" onclick="gamePage.opts.highlightUnavailable = $('#highlightUnavailable')[0].checked;">
				<label id="optionHighlightUnavailable" for="highlightUnavailable">Highlight buildings limited by storage space</label>
				<br>
				<input id="hideSell" type="checkbox" onclick="gamePage.opts.hideSell = $('#hideSell')[0].checked;">
				<label id="optionHideSell" for="hideSell">Hide 'sell' buttons</label>
				<br>
				<input id="hideDowngrade" type="checkbox" onclick="gamePage.opts.hideDowngrade = $('#hideDowngrade')[0].checked;">
				<label id="optionHideDowngrade" for="hideDowngrade">Hide 'downgrade' buttons</label>
				<br>
				<input id="hideBGImage" type="checkbox" onclick="gamePage.opts.hideBGImage = $('#hideBGImage')[0].checked; gamePage.ui.updateOptions();">
				<label id="optionHideBGImage" for="hideBGImage">Hide background image <i>(for color schemes where applicable)</i></label>
				<br>
				<input id="tooltipsInRightColumn" type="checkbox" onclick="gamePage.opts.tooltipsInRightColumn = $('#tooltipsInRightColumn')[0].checked; gamePage.ui.updateOptions();">
				<label id="optionTooltipsInRightColumn" for="tooltipsInRightColumn">Move tooltips in right column</label>
				<br>
                <br>

                <a id="optionMore" href="#" onclick="$('.optsExtra').toggle();">More...</a>
				<!-- looks like a to niche option to occupy entire setting slot -->
				<div class="optsExtra" style="display:none;">
					<input id="noConfirm" type="checkbox" onclick="gamePage.opts.noConfirm = $('#noConfirm')[0].checked;">
					<label id="optionNoConfirm" for="noConfirm">Do not confirm when clearing all jobs, researching policy, upgrading buildings, or when buying or selling all (Shift-click)</label>
					<br>
                    <input id="IWSmelter" type="checkbox" onclick="gamePage.opts.IWSmelter = $('#IWSmelter')[0].checked;">
                    <label id="optionIWSmelter" for="IWSmelter">Smelters turn off at 95% max Iron in Iron Will mode</label>
                    <br>
					<input id="disableTelemetry" type="checkbox" onclick="gamePage.opts.disableTelemetry = $('#disableTelemetry')[0].checked;">
					<label id="optionDisableTelemetry" for="disableTelemetry">Disable game telemetry</label>
					<br>
					<input id="enableRedshift" type="checkbox" onclick="gamePage.opts.enableRedshift = $('#enableRedshift')[0].checked;">
					<label id="optionEnableRedshift" for="enableRedshift">Enable offline progression</label>
					<br>
					<input id="disablePollution" type="checkbox" onclick="gamePage.opts.disablePollution = $('#disablePollution')[0].checked;">
					<label id="optionDisablePollution" for="disablePollution">Disable pollution effects</label>
					<br>
					<input id="enableRedshiftGflops" type="checkbox" onclick="gamePage.opts.enableRedshiftGflops = $('#enableRedshiftGflops')[0].checked;">
					<label id="optionEnableRedshiftGflops" for="enableRedshiftGflops">Enable offline gflops production</label>
					<br>
					<input id="batchSize" type="number" min="1" max="9999" size="4" oninput="$('#batchSize')[0].value = gamePage.opts.batchSize = Math.max(1, Math.min(9999, $('#batchSize')[0].value));">
					<label id="optionBatchSize" for="batchSize">Batch size of Ctrl-click</label>
					<br>
					<input id="forceLZ" type="checkbox" onclick="gamePage.opts.forceLZ = $('#forceLZ')[0].checked;">
					<label id="optionForceLZ" for="forceLZ" style="font-size: 75%;">Always compress in-memory save, in UTF-16 <i>(experimental)</i></label>
					<br>
					<input id="compressSaveFile" type="checkbox" onclick="gamePage.opts.compressSaveFile = $('#compressSaveFile')[0].checked;">
					<label id="optionCompressSaveFile" for="compressSaveFile" style="font-size: 75%;">Compress exported save file <i>(experimental)<br>
						WARNING: it generates save files that are NOT COMPATIBLE with older versions.</i></label>
				</div>

				<br>

				<input id="exportButton" type="button" value="Export" onclick="gamePage.saveExport();">

				<input id="importButton" type="button" value="Import" onclick="$('#importData').val(''); $('#importDiv').show();" style="margin-top: 10px;">
				<br>
			</div>

			<div id="exportDiv" style="display: none" class="dialog help">
				<h1 id="exportTo" >Export To:</h1>
				<input id="exportToDropbox" type="button" onclick="gamePage.saveExportDropbox();" value="Dropbox (Beta)">
				<input id="exportToSimpleFile" type="button" onclick="gamePage.saveToFile(false);" value="File (simple name)">
				<input id="exportToFullFile" type="button" onclick="gamePage.saveToFile(true);" value="File (full name)">
				<a id="download-link" target="_blank" style="display: none"></a>
				<br>
				<h1 id="exportToText">Text Export:</h1>
				<br>
				<textarea id="exportData" style="width: 550px; height: 220px;" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"></textarea>
				<br>
				<input id="closeButton" type="button" value="Close" onclick="$('#exportDiv').hide();" style="margin-top: 10px;">
			</div>

			<div id="importDiv" style="display: none" class="dialog help">
				<div id="importWarning">Warning! Importing data will overwrite your current game data.</div>
				<h1 id="importFrom">Import Form:</h1>
				<input id="importFromDropbox" type="button" onclick="gamePage.saveImportDropbox();" value="Dropbox (Beta)">
				<br>
				<h1 id="importFromText">Text Import:</h1>
				<br>
				<textarea id="importData" style="width: 550px; height: 220px;" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"></textarea>
				<br>
				<input id="doImportButton" type="button" value="Import" onclick="gamePage.saveImport(); $('#importDiv').hide();" style="margin-top: 10px;">
				<input id="cancelButton" type="button" value="Cancel" onclick="$('#importDiv').hide();" style="margin-top: 10px;">

			</div>

			<div id="appDiv" style="display: none" class="dialog help">
				<a id="dialogClose" href="#" class="close" style="position: absolute; top: 10px; right: 15px;">close</a>

				<span id="appText">Kittens Game Mobile has been released! Click on the link to follow:</span>
				<br>
				<br>
				<a id="appAndroid" target="_blank" href="https://play.google.com/store/apps/details?id=com.nuclearunicorn.kittensgame&hl=en">Android</a>&nbsp;|&nbsp;
				<a id="appIOS" target="_blank" href="https://itunes.apple.com/us/app/kittens-game/id1198099725?mt=8">iOS</a>
				<br>
				<br>
				<br>
				<!--span style="font-size:12px;">(Will open in a new window)</span-->
			</div>

			<div id="footerLinks" class="links-block">
				<a id="forum" href="https://forum.kittensgame.com/c/kittensgame" target="_blank">forum</a> |
				<a id="wiki" href="https://wiki.kittensgame.com/" target="_blank">wiki</a> |
				<a id="discord" href="https://discord.gg/2arBf9K" target="_blank">Discord</a> |
				<!-- <a href="http://kittensgame.tumblr.com" target="_blank">tumblr</a> | -->
				<!-- <a href="#" onclick="$('#helpDiv').toggle();">help</a> | -->
				<a id="credits" href="#" onclick="$('#creditsDiv').toggle();">credits</a> |
				<a id="donate" href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=82FJX5M8M3GVN" target="_blank">donate</a> |
				<a id="patreon" href="https://www.patreon.com/bloodrizer" target="_blank">Patreon</a>
				<!--  | <a href="classic/" target="_blank">classic</a> -->
			</div>
		</div>


	  <script
	  	async
		type="text/javascript"
		src="https://crowdin.com/js/crowdjet/crowdjet.js">
	  </script>
	  <div
		id="crowdjet-container"
		data-project-id="410426"
		style="bottom: 90px; right: 20px;">
	  </div>
	  <div id="crowdjet-expand-container" onclick="$('#crowdjet-container').toggle();$('#crowdjet-iframe').contents().find('#crowdjet').toggleClass('expanded');">
		[文|A]
	  </div>

	</body>
</html>